package main

import (
	"flag"
	"fmt"
	"os"
	"runtime"

	"gitee.com/liumou_site/go-hosts/module"
	"gitee.com/liumou_site/logger"
)

func main() {
	// 获取系统默认的hosts文件路径
	defaultHostsPath := getDefaultHostsPath()

	// 定义命令行参数，直接将系统默认路径作为默认值
	hostsPath := flag.String("hosts", defaultHostsPath, "指定hosts文件路径")
	help := flag.Bool("help", false, "显示帮助信息")
	version := flag.Bool("version", false, "显示版本信息")
	flag.Parse()

	// 显示版本信息
	if *version {
		fmt.Printf("go-hosts %s\n", module.Version())
		return
	}

	// 显示帮助信息
	if *help {
		fmt.Println("go-hosts 使用说明:")
		fmt.Printf("  -hosts string\t指定hosts文件路径 (默认: %s)\n", defaultHostsPath)
		fmt.Println("  -help\t\t显示帮助信息")
		fmt.Println("")
		fmt.Println("系统默认路径:")
		fmt.Println("  Windows: C:\\Windows\\System32\\drivers\\etc\\hosts")
		fmt.Println("  Linux/Mac: /etc/hosts")
		fmt.Println("")
		fmt.Println("版本信息:")
		fmt.Println("  使用 -version 参数查看当前版本")
		return
	}

	// 检查文件是否存在
	if _, err := os.Stat(*hostsPath); os.IsNotExist(err) {
		logger.Error(fmt.Sprintf("hosts文件不存在: %s", *hostsPath))
		return
	}

	// 初始化并运行程序
	h := module.New()
	h.File = *hostsPath
	logger.Info(fmt.Sprintf("使用hosts文件路径: %s", *hostsPath))
	h.Menu()
}

// 根据系统类型返回默认的hosts文件路径
func getDefaultHostsPath() string {
	sysType := runtime.GOOS
	switch sysType {
	case "windows":
		return "C:\\Windows\\System32\\drivers\\etc\\hosts"
	case "linux", "darwin", "freebsd", "netbsd", "openbsd":
		return "/etc/hosts"
	default:
		// 其他系统尝试使用通用路径或通过model.FileExist查找
		if f, err := module.FileExist(); err == nil {
			return f
		}
		// 默认返回Linux路径
		return "/etc/hosts"
	}
}
